package com.yang.library.service.service;


import com.yang.library.entry.Book;

import java.util.List;

/**
 * @author Chen
 * @description 书籍服务接口
 */
public interface BookService {
    // 管理员功能

    /**
     * 添加书籍到图书馆
     *
     * @param book 书籍对象
     * @return 成功返回true，失败返回false
     */
    boolean addBook(Book book);

    /**
     * 根据书名移除书籍
     *
     * @param title 书籍标题
     * @return 成功返回true，失败返回false
     */
    boolean removeBookByTitle(String title);

    /**
     * 更新书籍信息
     *
     * @param book 新的书籍对象
     * @return 成功返回true，失败返回false
     */
    boolean updateBook(String title, Book book);

    /**
     * 获取所有已借阅的书籍列表
     *
     * @return 已借阅的书籍列表
     */
    List<Book> getAllBorrowedBooks();

    // 普通用户功能

    /**
     * 用户借阅书籍
     *
     * @param title    要借阅的书籍标题
     * @param userName 借阅用户的名称
     */
    boolean borrowBook(String title, String userName);

    /**
     * 用户归还书籍
     *
     * @param title    要归还的书籍标题
     * @param userName 归还用户的名称
     */
    boolean returnBook(String title, String userName);

    List<Book> getBorrowedBooksByUser(String userName);

    // 查询功能（公共）

    /**
     * 根据书名或作者查询书籍
     *
     * @param title 书名关键字
     * @return 匹配的第一本书籍
     */
    List<Book> getBookByTitleOrAuthor(String title);

    /**
     * 获取图书馆中所有书籍的列表
     *
     * @return 所有书籍列表
     */
    List<Book> getAllBooks();
}
